<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Login extends CI_Controller {

	public $layout = '';
	
	public function __construct (){
		parent::__construct();
		
		$this->load->library(array('table','form_validation','session'));
		$this->load->helper('url');
		$this->form_validation->set_error_delimiters('<div>', '</div>');

		session_start();
	}

	public function index(){
		
		$data['form_action'] = site_url('login');
		
		$this->session->unset_userdata('id');
		
		$this->load->model('Usuario_model','',TRUE);
		$qtd_usuarios = $this->Usuario_model->count_all();
		 
		if($qtd_usuarios == 0){
		
			echo "NENHUM USUÁRIO CADASTRADO";
			redirect('usuario/add');
		}
		 
		if ($this->form_validation->run('login') == FALSE) {
		
			$this->load->view('login', $data);

		} else {
			
			$this->autentica();
		}

	}
	
	
	public function autentica() {
		
		$obj = new stdClass();
		$obj->login = $this->input->post('email');		    	//echo "sair";
		$obj->senha = $this->input->post('password');
		$obj->senha = md5($obj->senha);
		
		$data['alerta'] = '';
	
		$this->load->model('Login_model', '', TRUE);
		
		$user_cadastrado = $this->Login_model->get_usuario_mail($obj->login, $obj->senha);
		
		$data['form_action'] = site_url('login');
	
		if (empty($user_cadastrado)) {
	
			$data['alerta'] = '<i class="fa fa-exclamation-triangle fa-lg"></i> E-mail ou senha inválidos!';
			
			$data['link1'] = '<a class="link1" href="javascript:window.history.back();" title="Tentar novamente"> &raquo; tentar novamente</a>';
			
			$this->load->view('login', $data);
	
		} else {

				$usuario = array(
						
						'id' => $user_cadastrado->id, 
						'nome' => $user_cadastrado->nome,
						'nivel' => $user_cadastrado->nivel,
						'email' => $user_cadastrado->email,
						'logado' => TRUE,
				);
	
				
				
				//print_r($usuario);
				
				//$teste = $this->session->set_userdata($usuario);
				
				$this->session->set_userdata($usuario);
				
				//echo $this->session->userdata('nome');
				
				//print_r($teste);
					
				redirect('home');
			
		}
	
	}
	
 	public function logoff() {
 		$this->session->sess_destroy();
 		redirect('login');
 	}
 	
 	
 	public function nova_senha(){
 	
 		$this->layout = '';
 	
 		$this->load->library(array('form_validation'));
 		$this->form_validation->set_error_delimiters('<div>', '</div>');
 		$data['titulo'] = 'Nova senha';
 		$data['form_action'] = site_url("/login/nova_senha");
 	
 		$data['alerta'] = '';
 			
 	
 		if ($this->form_validation->run('login/nova_senha') == FALSE) {
 	
 			$this->load->view('nova_senha',$data);
 	
 		} else {
 				
 			//$this->load->library('convert');
 			//$obj = new stdClass();
 				
 			$email= $this->input->post('email');
 				
 			$this->load->model('Usuario_model', '', TRUE);
 			
 			$obj = $this->Usuario_model->get_by_email($email)->row();

 			if ($obj == null) {
 					
 				$data['alerta'] = '<div class="alert alert-warning alert-dismissable">
 									<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>  
 									O e-mail <strong>'.$email.'</strong> não está cadastrado. </div>';
 				
 				$this->load->view('nova_senha', $data);
 					
 			} else {
 	
 				
 				
 				$id = $obj->id;
 				$email = $obj->email;
 				$novoObj = array(
 						'senha' => $this->geraSenha(8, false, true, true),
 				);

 				if($this->email($email, $novoObj['senha']) == false){
 						
 					$data['alerta'] = '<div class="alert alert-danger alert-dismissable">
 										<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> 
 										ERRO com o envio do e-mail!</span> <br>' . "Não conseguimos enviar sua nova senha de acesso para o e-mail: $email. <br> Tente novamente em instantes.</div>";
 					$this->load->view('nova_senha', $data);
 						
 				}else{
 	

 					$novoObj['senha'] = md5($novoObj['senha']);
 						
 					$this->Usuario_model->updateSenha($id, $novoObj['senha']);
 						
 					$data['alerta'] = '<div class="alert alert-success alert-dismissable">
 										<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> 
 										Sua nova senha foi enviada para: <b> '.$email.' </b><br>
 										<a class="btn btn-default" href="'. site_url() .'" role="button"><i class="fa fa-check fa-lg"></i> OK</a>	
 										';
 					
 					$this->layout = '';
 					
 					$this->load->view('nova_senha', $data);
 						
 				}
 	
 			}
 				
 		}
 	}
 	
 	function geraSenha($tamanho = 8, $maiusculas = true, $numeros = true, $simbolos = false){
 		$lmin = 'abcdefghijklmnopqrstuvwxyz';
 		$lmai = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
 		$num = '1234567890';
 		$simb = '!@#$%';
 		$retorno = '';
 		$caracteres = '';
 	
 		$caracteres .= $lmin;
 		if ($maiusculas){
 			$caracteres .= $lmai;
 		}
 		if ($numeros){
 			$caracteres .= $num;
 		}
 		if ($simbolos){
 			$caracteres .= $simb;
 		}
 	
 		$len = strlen($caracteres);
 	
 		for ($n = 1; $n <= $tamanho; $n++) {
 			$rand = mt_rand(1, $len);
 			$retorno .= $caracteres[$rand-1];
 		}
 	
 		return $retorno;
 	}
 	
 	function email($email, $nova_senha){
 	
 		$assunto = "GN Seguro - Recuperação de acesso à Administração do Site";
 	
 		$mensagem = '<div style="font-size: 11pt">';
 		$mensagem .= 'Conforme solicitação, sua nova <b>Senha de Acesso</b> é: '.$nova_senha.'<br/><br/>';
 		$mensagem .= 'Não divulgue sua senha. Recomendamos trocá-la periodicamente.<br /><br/>';
 		$mensagem .= '<b>Não responda esta mensagem</a></b><br /><br />';
 		$mensagem .= '</div>';
 	
 		$list = array($email);
 		$this->load->library('email');
 		
 		$this->email->from('admin@gnseguro.com.br', 'GN Seguro');
 	
 		$this->email->reply_to('admin@gnseguro.com.br');
 		$this->email->to($list);
 		//$this->email->bcc('tarsodecastro@gmail.com');
 		$this->email->subject($assunto);
 		$this->email->message($mensagem);
 	
 		if ( ! $this->email->send() ){
 			return false;
 		} else {
 			return true;
 		}
 	
 	}
	
}
